<?xml version="1.0" encoding="iso-8859-1" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	
	<xsl:output method="xml" standalone="yes" />
	
	<xsl:template match="addressbook">
		<xsl:copy>
			<xsl:apply-templates select="company" />
		</xsl:copy>
	</xsl:template>
	
	<xsl:template match="@*">
		<xsl:copy/>
	</xsl:template>
	
	<xsl:template match="company">
		<xsl:element name="{local-name()}">
			<xsl:attribute name="name"><xsl:value-of select="name/text()" /></xsl:attribute>
			<xsl:apply-templates select="departments" />
		</xsl:element>
	</xsl:template>
	
	<xsl:template match="departments">
		<xsl:element name="{local-name()}">
			<xsl:attribute name="count"><xsl:value-of select="count(department)" /></xsl:attribute>
			
			<xsl:for-each select="department">
				<xsl:apply-templates select="@*" />
				
				<xsl:element name="{local-name()}">
					<xsl:variable name="department-id" select="@id" />
					<xsl:attribute name="name"><xsl:value-of select="name/text()" /></xsl:attribute>
					
					<xsl:for-each select="ancestor::*/descendant::contactpersons/person[@department = $department-id]">
						<xsl:element name="person">
							<xsl:attribute name="name"><xsl:value-of select="name/text()" /></xsl:attribute>
							<xsl:apply-templates select="@*" />

							<xsl:element name="contactdata">
								<xsl:element name="phone"><xsl:value-of select="phone/text()" /></xsl:element>
							</xsl:element>
						</xsl:element>
					</xsl:for-each>
				</xsl:element>
			</xsl:for-each>
		</xsl:element>
	</xsl:template>	
	
</xsl:stylesheet>